<#include "/macro_.ftl">
INSERT
INTO
${entityMapper.tableName}
(<${r"#"}assign prefixName = ' '>
<#list entityMapper.fieldMapperMap?values as fieldMapper>
<${r"#"}if (insert_${fieldMapper.code}??) && (insert_${fieldMapper.code}_value??)>
${r"$"}{prefixName} `${fieldMapper.columnName}`
<${r"#"}assign prefixName = ','>
</${r"#"}if>
</#list>)
(SELECT
<${r"#"}assign prefixName = ' '>
<#list entityMapper.fieldMapperMap?values as fieldMapper>
<${r"#"}if (insert_${fieldMapper.code}??) && (insert_${fieldMapper.code}_value??)>
${r"$"}{prefixName} :insert_${fieldMapper.code}_value
<${r"#"}assign prefixName = ','>
</${r"#"}if>
</#list>
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM ${entityMapper.tableName} E
<${r"#"}assign prefixName = 'WHERE'>
<#list entityMapper.fieldMapperMap?values as fieldMapper>
<${r"#"}if (where_and_eq_${fieldMapper.code}??)>
<${r"#"}if (where_and_eq_${fieldMapper.code}_value??)>
${r"${prefixName}"} E.${fieldMapper.columnName} = :where_and_eq_${fieldMapper.code}_value
<${r"#"}else>
${r"${prefixName}"} E.${fieldMapper.columnName} IS NULL
</${r"#"}if>
<${r"#"}assign prefixName = 'AND'>
</${r"#"}if>
</#list>))